﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;
using log4net;
namespace SW_SoftBully.Models.ModuloAdministracion.Servicio
{
    public class ServicioDAO
    {
        private static ILog log = LogManager.GetLogger(typeof(ServicioDAO));

        public List<ServicioBean> buscarServicio(FiltroServicio filtro)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<ServicioBean> listaServicio = new List<ServicioBean>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select p.Nombre,p.Descripcion from servicio p where  p.id_Edificio="+ filtro.idEdificio + " and estado=1 ";




                string auxFiltro = "";
                //  where p.Nombres like '%asd%' and p.Apellidos like '%asd%' and c.Id_Cargo =2 and p.Nro_Documento_persona like '%1%'"

              

                if (!(filtro.nombre== null || filtro.nombre.Trim().Equals("")))
                {
                    auxFiltro = auxFiltro + " and  Nombre like '%" + filtro.nombre.Trim() + "%'  ";
                }

              
                if (!(filtro.descripcion == null || filtro.descripcion.Trim().Equals("")))
                {
                    auxFiltro = auxFiltro + " and  descripcion like '%" + filtro.descripcion.Trim() + "%'  ";
                }

              
                commandString = commandString + auxFiltro;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ServicioBean prod = new ServicioBean() ;
                    prod.nombre = (string)dataReader["nombre"];
                    prod.descripcion = (string)dataReader["descripcion"];
                   
                    listaServicio.Add(prod);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaServicio;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }



        }


        public string mantenerServicio(ServicioBean Servicio)
        {

            
            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();

            try
            {

                if (Servicio.accion == 0)
                {
                    commandString = "update  Servicio set estado=0 where idServicio=" + Servicio.idServicio;
                    mensaje = "Se elimino el Servicio correctamente";

                }
                if (Servicio.accion == 1)
                {
                    int x;
                    commandString = "select count(*) from Servicio where nombre ='" + Servicio.nombre + "' and estado=1";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        x = 0;
                    }



                    if (x != 0)
                    {
                        mensaje = "El Servicio: '" + Servicio.nombre + "' ya existe, No se pudo insertar";
                        sqlCon.Close();
                        return mensaje;
                    }
                    commandString = "insert into Servicio values('" + Servicio.nombre + "','" + Servicio.descripcion + "','" + "',1)";
                    mensaje = "Se inserto el Servicio correctamente";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();

                    sqlCon.Close();
                    return mensaje;
                }
                if (Servicio.accion == 2)
                {
                    commandString = "update Servicio set nombre='" + Servicio.nombre + "',descripcion='" + Servicio.descripcion + "' where idServicio=" + Servicio.idServicio;
                    mensaje = "Se modifico el Servicio correctamente";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();

                    sqlCon.Close();
                    return mensaje;
                }
                sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                sqlCon.Close();
            }

            catch (Exception ex)
            {

                if (Servicio.accion == 0)
                {
                    mensaje = "No se pudo eliminar el Servicio correctamente";

                }
                if (Servicio.accion == 1)
                {
                    mensaje = "No se pudo insertar el Servicio correctamente";
                }
                if (Servicio.accion == 2)
                {
                    mensaje = "No se pudo modificar el Servicio correctamente";
                }

                if (Servicio.accion == 0)
                {
                    log.Error(" Eliminar Servicio - GET(EXCEPTION):", ex);
                }


                if (Servicio.accion == 1)
                {
                    log.Error(" Registrar Servicio - GET(EXCEPTION):", ex);
                }

                if (Servicio.accion == 2)
                {
                    log.Error(" Modificar Servicio - GET(EXCEPTION):", ex);
                }

              
                throw ex;
            }finally{


                sqlCon.Close();

            }
            return mensaje;
        }


    }


}